package com.ccc.oa.common.core.utils;


import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

/**
 * --- 代码敲对！ ---
 *
 * @author CCCccc
 * @create 2025/10/10
 * 备注：jwt工具类
 */
public class JwtUtils {
    // 加密密钥
    public static final String secret = "catering";

    /**
     * 生成token
     */
    public static String createJwtToken(Map<String, Object> claims){
        // 签名算法，这里使用的是sha256
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
        // 生成token
        JwtBuilder builder = Jwts.builder()
                .setClaims(claims) // 设置token中存储的数据(载荷)
                .setExpiration(new Date(System.currentTimeMillis()+10800000)) // 设置token的过期时间
                .signWith(signatureAlgorithm, secret); // 设置签名使用的算法和密钥
        // 返回token
        return builder.compact();
    }

    /**
     * 解析token
     */
    public static Claims parseJwtToken(String token){
        try {
            // 解析token
        Claims claims = Jwts.parser()
                .setSigningKey(secret) // 解析方式
                .parseClaimsJws(token).getBody(); // 取出载荷
        return claims;
        } catch (Exception e) {
            // 如果解析失败则抛出异常
            throw new RuntimeException(e.getMessage());
        }

    }
}
